package com.ruoyi.management.base.config;

import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

/**
 * AppTaskConfig 类用于配置应用中的任务调度
 * 它实现了 SchedulingConfigurer 接口，允许自定义任务调度器的配置
 */
public class AppTaskConfig implements SchedulingConfigurer {

    /**
     * 配置任务调度器的方法
     * 它通过 ScheduledTaskRegistrar 对象来设置任务调度器
     *
     * @param taskRegistrar ScheduledTaskRegistrar 对象，用于注册和管理定时任务
     */
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        // 设置任务调度器为自定义的 taskExecutor
        taskRegistrar.setScheduler(taskExecutor());
    }

    /**
     * 创建并返回一个任务执行器
     * 该方法通过 Executors.newScheduledThreadPool(10) 创建一个定时任务线程池
     *
     * @return Executor 返回一个线程池作为任务执行器
     */
    @Bean
    public Executor taskExecutor() {
        // 创建一个包含10个线程的定时任务线程池
        return Executors.newScheduledThreadPool(10);
    }
}
